Mainframe,最早期的電腦,原因是當初的技術落後,所以第一代的電腦體積很大,另外它其實是非常昂貴的,當初出來只有國家等級,只有最尖端的技術,或是特殊的,主要專門處理某樣東西的才會使用到mainframe這樣的設備。
Mainframe的特性
體積大,I/O device速度慢,只有計算比較強,專門處理單一大量事務的機器,
Batch
最早的時候寫程式並不是打打鍵盤就好,而是要打卡的,當時寫程式就是準備一大堆卡片,然後mainframe開始讀卡片,接著做運算,很難想像它真的是程式。Mainframe能做的事情也非常簡單,一次只能處理一個程式,所以這個人處理完前,其他人只能在旁邊等,所以叫做Batch,microsoft裡也有batch檔,就是開機的程式,它最原始的型式的那些程式就像它要獨占電腦,做完它才能做下一個。
缺點:One job at a time
No interaction between users and jobs
CPU is often idle(I/O speed << CPU speed)
Memory裡面你可以看見它就是這兩塊,上面那塊就叫做OS,那些程式碼,就是統稱的OS,它本身也是一個程式,需要占用一塊memory的空間,因為OS的設計是如此的單純,所以它只把memory就是拆成兩塊,執行完就整個flush掉,換下一個人。
今天可能有很多user,每個人都拿一疊的卡片交給operator,然後operator負責決定誰先誰後,怎麼決定是operator的事情,與電腦設計無關,OS只做那麼一件事,就是transfer control,其他事情都不用管,也沒有security的問題,因為只有你一個,你有total control。
因為mainframe是one job at a time,未來電腦可以run1000個程式在上面,很多應用都需要這麼多程式才有辦法運作,但mainframe system就是限制一次一個程式,所以它很單純,也有很大的限制。
同時因為是no interaction,所以你丟一堆卡片給它,然後搭只吐出一張卡片,這中間你忘記塞什麼東西或你想改變什麼,都是做不到的。
當時電腦是非常貴的,可是你會發現CPU大部分時間都在idle,因為I/O非常的慢,即使現在科技再怎麼進步,這個問題仍然存在,手機CPU每秒會處理的instruction是非常多的,就算I/O再怎麼優化,你輸入後輸出等等的速度還是遠慢於CPU。
當初就有想了一些解決方法,也就是之後介紹的multi-programming跟time-sharing,讓程式可以很快的切換,所以其實處理I/O的仍然是一個程式,只是因為速度很快,所以user不會有感覺,其實電腦可以偷偷處理很多人的事情,讓每一個人都覺得它可以跟這台電腦做interact,其實還是step by step。